﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Security.Principal;
using System.Web.Security;

namespace ToppingControl
{
   // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
   // visit http://go.microsoft.com/?LinkId=9394801

   public class MvcApplication : System.Web.HttpApplication
   {
      protected void Application_Start()
      {
         AreaRegistration.RegisterAllAreas();

         WebApiConfig.Register(GlobalConfiguration.Configuration);
         FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
         RouteConfig.RegisterRoutes(RouteTable.Routes);
         BundleConfig.RegisterBundles(BundleTable.Bundles);
         AuthConfig.RegisterAuth();
      }

      protected void Application_AuthenticateRequest(Object sender,
      EventArgs e)
      {
      if (HttpContext.Current.User != null)
      {
         if (HttpContext.Current.User.Identity.IsAuthenticated)
         {
            if (HttpContext.Current.User.Identity is FormsIdentity)
            {
               FormsIdentity id =
                     (FormsIdentity)HttpContext.Current.User.Identity;
               FormsAuthenticationTicket ticket = id.Ticket;

               // Get the stored user-data, in this case, our roles
               string userData = ticket.UserData;
               string[] roles = userData.Split(',');
               HttpContext.Current.User = new GenericPrincipal(id, roles);
            }
         }
      }
      }
   }
}